R Schnittstellen

Jan-Philipp Kolb

28 April 2017

Einführung und Motivation

Pluspunkte von R

Warum R?

Modularer Aufbau

Modularer Aufbau

Gründe

Übersicht - warum R

pic

pic

Nachteile von R

  1. Daten werden oft anderswo erfasst
  2. Nicht jeder ist bereit mit R zu arbeiten
  3. Nicht auf jedem Rechner ist R installiert
  4. R ist manchmal zu langsam
  5. Schwierigkeiten bei der Arbeit mit großen Datenmengen

Was folgt daraus

  1. Schnittstelle zu SPSS/Stata/Excel zum Import von Daten
  2. Schnittstelle zu Word
  3. Möglichkeit HTML Präsentationen zu erzeugen
  4. Nutzung von C++
  5. Nutzung von Datenbanken

Warum die Nutzung von Schnittstellen?

Die Nutzung von Schnittstellen beim Import/Export

Import

Import

Reproducible Research

Was wird bei Wikipedia unter Reproduibility verstanden?

Darstellung von Ergebnissen

Warum die Schnittstelle zu C++?

Die Nutzung von Datenbanken

Nutzung der Unterlagen auf GitHub

Wie wird das Github Verzeichnis genutzt

https://github.com/Japhilko/RInterfaces

Informationen audrucken

Raw Button zum Download

Raw Button zum Download

Weitere Dateien herunterladen

Organisatorisches

Datenimport

Dateiformate in R

Formate - base package

R unterstützt von Haus aus schon einige wichtige Formate:

Datenimport leicht gemacht mit Rstudio

Import Button

Import Button

CSV aus dem Web einladen

https://data.montgomerycountymd.gov/api/views/6rqk-pdub/rows.csv?accessType=DOWNLOAD

Der Arbeitsspeicher

So findet man heraus, in welchem Verzeichnis man sich gerade befindet

getwd()

So kann man das Arbeitsverzeichnis ändern:

Man erzeugt ein Objekt in dem man den Pfad abspeichert:

main.path <- "C:/" # Beispiel für Windows
main.path <- "/users/Name/" # Beispiel für Mac
main.path <- "/home/user/" # Beispiel für Linux

Und ändert dann den Pfad mit setwd()

setwd(main.path)

Bei Windows ist es wichtig Slashs anstelle von Backslashs zu verwenden.

Alternative - Arbeitsspeicher

Import von Excel-Daten

library(foreign)
?read.csv
?read.csv2

CSV Dateien einlesen

Zunächst muss das Arbeitsverzeichnis gesetzt werden, in dem sich die Daten befinden:

Dat <- read.csv("schuldaten_export.csv")

Wenn es sich um Deutsche Daten handelt:

Dat <- read.csv2("schuldaten_export.csv")

Import csv

url <- "https://raw.githubusercontent.com/Japhilko/
GeoData/master/2015/data/whcSites.csv"

whcSites <- read.csv(url) 

SPSS Dateien einlesen

Dateien können auch direkt aus dem Internet geladen werden:

link<- "http://www.statistik.at/web_de/static/
mz_2013_sds_-_datensatz_080469.sav"

?read.spss
Dat <- read.spss(link,to.data.frame=T)

stata Dateien einlesen

MZ02 <- read.dta("MZ02.dta")

R und Excel

Eine wichtige Datenquelle

library(xlsx)
dat <- read.xlsx("cult_emp_sex.xls",1)

Einige Schritte um R und Excel zu verbinden

install.packages("XLConnect")
library("XLConnect")

Eine Excel Datei aus R erzeugen

fileXls <- "data/newFile.xlsx"
unlink(fileXls, recursive = FALSE, force = FALSE)
exc <- loadWorkbook(fileXls, create = TRUE)
createSheet(exc,'Input')
saveWorkbook(exc)

Das Arbeitsblatt mit Daten befüllen

input <- data.frame('inputType'=c('Day','Month'),'inputValue'=c(2,5))
writeWorksheet(exc, input, sheet = "input", startRow = 1, startCol = 2)
saveWorkbook(exc)

BERT - Eine weitere Verbindung zwischen R und Excel

myFunction <- function(){
 aa <- rnorm(200)
 bb <- rnorm(200)
 res <- lm(aa~bb)$res
 return(res)
}

Das Paket readxl

install.packages("readxl")
library(readxl)

Präsentation von Daten - Reproducible Research

CRAN Taskview zu reproducible research

Resourcen

Word Dokumente mit R erstellen

Ein Markdown Dokument mit Rstudio erzeugen

Der Start

Mein erstes mit R erzeugtes Word Dokument

Erstes Beispiel

Das Arbeiten mit Markdown

Rmarkdown - erste Schritte

Markdown ist eine sehr einfache Syntax, die es Benutzern erlaubt, aus einfachen Textdateien gut gelayoutete Dokumente zu erstellen.

**fettes Beispiel**
*kursives Beispiel*
~~durchgestrichen~~
- Aufzählungspunkt

fettes Beispiel

kursives Beispiel

durchgestrichen

Weitere Markdown Befehle

### Überschrift Ebene 3
#### Überschrift Ebene 4
[Meine Github Seite](https://github.com/Japhilko)

Überschrift Ebene 3

Überschrift Ebene 4

Meine Github Seite

Weitere Markdown Befehle

![BSP](http://e-scientifics.de/content/example_kinderbild.jpg)
![BSP 2](figure/example.png)

Chunks - Erste Schritte

Button um Chunks einzufügen

Inline Code

n=100

Ein inline Codeblock: 100

Chunk Optionen

Argument Beschreibung
eval Soll Rcode evaluiert werden?
warning Sollen Warnings angezeigt werden?
cache Soll der Output gespeichert werden?

Optionen

Optionen für Word Output

Code Hervorhebung

Das Paket knitr

install.packages("knitr")
library("knitr")

Eine Tabelle mit kable erzeugen

a <- runif(10)
b <- rnorm(10)
ab <- cbind(a,b)
kable(ab)
a b
0.4187260 -0.0208481
0.1080964 0.7370236
0.7462707 -1.5531820
0.2663426 -1.0163409
0.3797959 0.6224963
0.8080904 0.5387171
0.6135115 0.2033197
0.1821460 1.0501195
0.9535168 -0.5623560
0.2891734 -0.4959585

Vorlagen verwenden

  1. Ein Word Dokument mit Rmarkdown erstellen
  2. Das Dokument in Word öffnen und Format verändern
  3. Vorlage als Referenz angeben

Resourcen

PDF Dokumente und Präsentationen mit LaTeX, Beamer und Sweave

Präsentationen mit Rmarkdown

beamer Präsentationen

Beamer Optionen

Beamer Themen

Chunks einfügen

Ergebnis - Cache

Wie man das im Header des Dokuments angibt

---
title: "Intro - Erste Schritte"
author: "Jan-Philipp Kolb"
date: "10 April 2017"
output:
  beamer_presentation: 
    colortheme: beaver
    theme: CambridgeUS
---

Inhaltsverzeichnis I

Inhaltsverzeichnis II

output: 
  beamer_presentation: 
    toc: yes

Optionen für die Graphikeinbindung

Präsentationen mit Sweave

Das Dokument erstellen

Sweave Präsentation

Chunks bei Sweave

Chunk Optionen

Inline Code

\Sexpr{}

Inline Code - das Ergebnis

PDF Paper mit R

Übersicht - PDF Paper

Jabref

Referenz mit R bekommen

citation("RMySQL")
## 
## To cite package 'RMySQL' in publications use:
## 
##   Jeroen Ooms, David James, Saikat DebRoy, Hadley Wickham and
##   Jeffrey Horner (2017). RMySQL: Database Interface and 'MySQL'
##   Driver for R. R package version 0.10.11.
##   https://CRAN.R-project.org/package=RMySQL
## 
## A BibTeX entry for LaTeX users is
## 
##   @Manual{,
##     title = {RMySQL: Database Interface and 'MySQL' Driver for R},
##     author = {Jeroen Ooms and David James and Saikat DebRoy and Hadley Wickham and Jeffrey Horner},
##     year = {2017},
##     note = {R package version 0.10.11},
##     url = {https://CRAN.R-project.org/package=RMySQL},
##   }

Das bibtex file einbinden I

Das bibtex file einbinden II

---
title: "R Schnittstellen"
author: "Jan-Philipp Kolb"
date: "21 April 2017"
output: 
  pdf_document: default
bibliography: Rschnittstellen.bib
---

Das Ergebnis

HTML Dokumente, Präsentationen und Dashboards mit Rmarkdown

Präsentationen mit Rpres

Der einfachste Weg - Rpres

Eine erste Präsentation

Erste Daten eintragen

## [1] "Fri Apr 28 10:00:18 2017"

Eine Folie mit Formel

$$
\begin{equation}\label{eq2}
t_{i}=\sum\limits_{k=1}^{M_{i}}{y_{ik}}=M_{i}\bar{Y}_{i}. 
\end{equation}
$$

Zwei Spalten

Folie mit zwei Spalten
====================================
Erste Spalte
***
Zweite Spalte

Folienübergänge

transition: rotate

Weitere mögliche Folienübergänge

Folientypen

Ein neues Kapitel einfügen
====================================
type: section
Anderer Folientyp
====================================
type: prompt
Noch ein anderer Folientyp
====================================
type: alert

Die Schriftart wechseln

Meine Präsentation
========================================
author: Jan-Philipp Kolb
font-family: 'Impact'

Schrifttypen können auch importiert werden

Meine Präsentation
========================================
author: Jan-Philipp Kolb
font-import: http://fonts.googleapis.com/css?family=Risque
font-family: 'Risque'

Kleineren Text

Normale Schriftgröße

<small>This sentence will appear smaller.</small>

Die Präsentation anschauen

http://rpubs.com/Japhilko82/FirstRpubs

Eine ioslides Präsentation

Eine ioslides Präsentation

ioslides - Der Start

Weitere Dinge tun

![picture of spaghetti](images/spaghetti.jpg)

Ein Logo hinzu

---
title: "ioslides Beispiel"
author: "Jan-Philipp Kolb"
date: "20 April 2017"
output: 
  ioslides_presentation:
    logo: figure/Rlogo.png
---

Eine slidy Präsentation

slidy Präsentationen

Was ist CSS?

Cascading Style Files

knitr Engines

Tabellen

1 2 3 4 5 6 7 8 9 10
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0

Das CSS ändern

Um den Präsentationstyp zu ändern kann man das CSS verändern

HTML Dokumente

Ein HTML Dokument erzeugen

Ein Template verwenden

Weitere Vorlagen nutzen

Beispiele für Templates

Dashboards

Beispiel R-Pakete

Paket installieren

install.packages("flexdashboard", type = "source")

Ein Dashboard erstellen mit Rstudio

Gallerie

install.packages("highcharter", type = "source")

Notebooks zur Integration von anderen Programmiersprachen (Python,LaTeX,Julia)

Notebooks

Rnotebooks

Ein Rnotebook anlegen

Rnotebook - erste Schritte

Python Code integrieren

import sys
print(sys.version)
## 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)]

LaTeX Code integieren

Notebook veröffentlichen I

Notebook veröffentlichen II

Andere Notebooks

Jupyter Notebook

jupyter notebook

Start Jupyter Notebook

Beispiel Eingabe Code

Beaker Notebook

Beaker Notebook

Beaker starten

Aufgabe: Bearbeiten Sie ein Notebook weiter

Interaktive Karten mit dem Javascript Paket leaflet

Die Daten - Weltkulturerbe

url <- "https://raw.githubusercontent.com/Japhilko/
GeoData/master/2015/data/whcSites.csv"

whcSites <- read.csv(url) 

Notwendige Pakete

magrittr - für den Pipe Operator in R:

library("magrittr")

leaflet - um interaktive Karten mit der JavaScript Bibliothek ‘Leaflet’ zu erzeugen

library("leaflet")

Eine interaktive Karte erstellen

m <- leaflet() %>%
  addTiles() %>%  # Add default OpenStreetMap map tiles
  addMarkers(lng=whcSites$lon, 
             lat=whcSites$lat, 
             popup=whcSites$name_en)
m

Die Karte zeigen

pic

pic

Farbe hinzu

whcSites$color <- "red"
whcSites$color[whcSites$category=="Cultural"] <- "blue"
whcSites$color[whcSites$category=="Mixed"] <- "orange"

Eine Karte mit Farbe erzeugen

m1 <- leaflet() %>%
  addTiles() %>%  
  addCircles(lng=whcSites$lon, 
             lat=whcSites$lat, 
             popup=whcSites$name_en,
             color=whcSites$color)

Die Karte zeigen

Weltkulturerbe

Weltkulturerbe

Die Karte abspeichern

gui

gui

Layers ein- und ausblenden

leaflet() %>%
  addTiles() %>%
  addMarkers(data = coffee_shops, group = "Food & Drink") %>%
  addMarkers(data = restaurants, group = "Food & Drink") %>%
  addMarkers(data = restrooms, group = "Restrooms")

Karte mit Polygonen erzeugen

library(sp)
Sr1 = Polygon(cbind(c(2, 4, 4, 1, 2), c(2, 3, 5, 4, 2)))
Sr2 = Polygon(cbind(c(5, 4, 2, 5), c(2, 3, 2, 2)))
Sr3 = Polygon(cbind(c(4, 4, 5, 10, 4), c(5, 3, 2, 5, 5)))
Sr4 = Polygon(cbind(c(5, 6, 6, 5, 5), c(4, 4, 3, 3, 4)), hole = TRUE)
Srs1 = Polygons(list(Sr1), "s1")
Srs2 = Polygons(list(Sr2), "s2")
Srs3 = Polygons(list(Sr4, Sr3), "s3/4")
SpP = SpatialPolygons(list(Srs1, Srs2, Srs3), 1:3)
leaflet(height = "300px") %>% addPolygons(data = SpP)

Beispiel US Staaten

library(maps)
mapStates = map("state", fill = TRUE, plot = FALSE)
leaflet(data = mapStates) %>% addTiles() %>%
  addPolygons(fillColor = topo.colors(10, alpha = NULL), stroke = FALSE)

Die Basiskarte ändern

m <- leaflet() %>% setView(lng = -71.0589, lat = 42.3601, zoom = 12)
m %>% addTiles()
m %>% addProviderTiles("Stamen.Toner")

Basiskarte - CartoDB

m %>% addProviderTiles("CartoDB.Positron")

Esri.NatGeoWorldMap

m %>% addProviderTiles("Esri.NatGeoWorldMap")

OpenTopoMap

m %>% addProviderTiles("OpenTopoMap")

Thunderforest.OpenCycleMap

m %>% addProviderTiles("Thunderforest.OpenCycleMap")

WMS Tiles hinzufügen

leaflet() %>% addTiles() %>% setView(-93.65, 42.0285, zoom = 4) %>%
  addWMSTiles(
    "http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi",
    layers = "nexrad-n0r-900913",
    options = WMSTileOptions(format = "image/png", transparent = TRUE),
    attribution = "Weather data © 2012 IEM Nexrad"
  )

Mehrere Layer miteinander kombinieren

m %>% addProviderTiles("MtbMap") %>%
  addProviderTiles("Stamen.TonerLines",
    options = providerTileOptions(opacity = 0.35)) %>%
  addProviderTiles("Stamen.TonerLabels")

Andere Marker benutzen

greenLeafIcon <- makeIcon(
  iconUrl = "http://leafletjs.com/examples/custom-icons/leaf-green.png",
  iconWidth = 38, iconHeight = 95,
  iconAnchorX = 22, iconAnchorY = 94,
  shadowUrl = "http://leafletjs.com/examples/custom-icons/leaf-shadow.png",
  shadowWidth = 50, shadowHeight = 64,
  shadowAnchorX = 4, shadowAnchorY = 62
)

leaflet(data = quakes[1:4,]) %>% addTiles() %>%
  addMarkers(~long, ~lat, icon = greenLeafIcon)

Cluster Optionen für Marker

leaflet(quakes) %>% addTiles() %>% addMarkers(
  clusterOptions = markerClusterOptions()
)

Ein Rechteck hinzufügen

leaflet() %>% addTiles() %>%
  addRectangles(
    lng1=-118.456554, lat1=34.078039,
    lng2=-118.436383, lat2=34.062717,
    fillColor = "transparent"
  )

Internetresourcen und Schnittstellen nutzen

Applikationen und Projektverwaltung mit Rstudio und git

Hochperfomanter Code

Integration von Datenbanken